/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.marcelo.agro.lotes.util;

import java.io.File;
import org.marcelo.agro.core.api.ILotes;
import org.openide.modules.InstalledFileLocator;
import org.openide.modules.ModuleInstall;
import org.openide.util.Lookup;

/**
 *
 * @author marcelo
 * La idea de este modulo es la de inicializar la base de datos para lotes
 * Cargar los datos en UnidadDeMedida, Distrito y Departamento
 */
public class Installer extends ModuleInstall{
    
    private static int CANTIDAD_DEPARTAMENTOS = 18;
    private static int CANTIDAD_DISTRITOS = 243;
    private static int CANTIDAD_UNIDAD_MEDIDAS= 4;
    
    private static String TABLA_DISTRITOS = "DISTRITO";
    private static String TABLA_DEPARTAMENTOS = "DEPARTAMENTO";
    private static String TABLA_UNIDAD_MEDIDA = "UNIDAD_MEDIDA_SUPERFICIE";
    
    private static String PATH_DISTRITOS = "distritos.csv";
    private static String PATH_DEPARTAMENTOS = "departamentos.csv";
    private static String PATH_UNIDAD_MEDIDA = "unidadMedida.csv";
    private static String PATH_BASE = "org/marcelo/agro/lotes/util/";
    private static String CODE_BASE = "org.marcelo.agro.lotes.util";
    
    
    
    private ILotes il = Lookup.getDefault().lookup(ILotes.class);

    @Override
    public void restored() {
        super.restored();
//        Cargar datos en la base de datos
       
//        Antes de Inicializar preguntar si la base de datos necesita ser inicializada
//        si necesita ser inicializada se procede a inicializar
//        il.inicializar();
        checkDepartamentos();
        checkDistritos();
        checkUnidadMedida();
        //Cargar los datos si es necesario, preguntar la lista de Departamentos, preguntar la lista de Distritos
        
    }
    
    
    private void checkDistritos(){
        try{
            int cantidadDistritos  = il.getDistritos().size();
        
            if (cantidadDistritos > 0) {
                if (cantidadDistritos != CANTIDAD_DISTRITOS) {
                    //se agregaron distritos o borraron distritos, que hacer?
                }
            }
            else {
                //cargar los datos si o si la ruta del path esta mal
                 
                File archivoDistritos =  InstalledFileLocator.getDefault().locate(PATH_DISTRITOS, CODE_BASE, true);
                il.saveCsvToTable(TABLA_DISTRITOS, archivoDistritos);
            }
        }
        catch(Exception e) {
            //no se pudo realizar la consulta
            System.err.println(e);
        
        }
        
    }
    private void checkDepartamentos(){
        
        try{
            int cantidadDepartamentos  = il.getDepartamentos().size();
        
            if (cantidadDepartamentos > 0) {
                if (cantidadDepartamentos != CANTIDAD_DEPARTAMENTOS) {
                    //se agregaron distritos o borraron distritos, que hacer?
                }
            }
            else {
                //cargar los datos si o si
                File archivoDepartamentos =  InstalledFileLocator.getDefault().locate(PATH_DEPARTAMENTOS , CODE_BASE, true);
                il.saveCsvToTable(TABLA_DEPARTAMENTOS , archivoDepartamentos);
                
            }
        }
        catch(Exception e) {
            //no se pudo realizar la consulta
            System.err.println(e);
        
        }
    
    }
    /**
     * Chequea que la cantidad de unidad de medida coincida con lo definido al comienzo de la aplicación
     */
    private void checkUnidadMedida(){
        try{
            int cantidadUnidadMedida  = il.getUnidadesSuperficies().size();

            if (cantidadUnidadMedida > 0) {
                if (cantidadUnidadMedida != CANTIDAD_UNIDAD_MEDIDAS) {
                    //se agregaron distritos o borraron distritos, que hacer?
                }
            }
            else {
                //cargar los datos si o si
                File archivoUnidadMedida =  InstalledFileLocator.getDefault().locate(PATH_UNIDAD_MEDIDA , CODE_BASE, true);
                il.saveCsvToTable(TABLA_UNIDAD_MEDIDA , archivoUnidadMedida);
            }
        }
        catch(Exception e) {
            //no se pudo realizar la consulta
            System.err.println(e);

        }
    }
    
    private int getVersionDB(){
        return 0;
    }
    
    private int getVersionModulo(){
        return 0;
    }
    //
    private void checkVerzionDB(){}
    private boolean tieneDatosDB(){
        return true;
    }
    private void cargarDatosDB(){}
    
//    351505056213294
//    personal
    
    
    
}
